import { env } from "../../utils/env";

Component({
  properties: {
    title: {
      type: String,
      value: '填写助力信息',
    },
    showDialog: {
      type: Boolean,
      value: false,
    },
    type: {
      type: String,
      value: 'dz',
    },
    verifyTitle: {
      type: String,
      value: '请填写分享码或上传图片',
    },
  },

  data: {
    s_code: '',
    remark: '',
    z_img: [], // 存储上传的图片
    beforeClose(action) {
      return new Promise(resolve => {
        if (action === 'confirm') {
          resolve(false);
        } else {
          resolve(true);
        }
      });
    }
  },

  methods: {
    // 显示对话框
    show() {
      this.setData( 
        { 
          showDialog: true ,  
          s_code: '',
          remark: '',
          z_img: [], // 存储上传的图片});
        }
      );
    },

    // 隐藏对话框
    hide() {
      this.setData({ showDialog: false });
    },
    

    // 确认
    onConfirm(event) {
      if(this.properties.type === 'dz'){
        // 校验逻辑：s_code 和 z_img 至少有一项必填
        if (!this.data.s_code && this.data.z_img.length === 0) {
          wx.showToast({
            title: this.properties.verifyTitle,
            icon: 'none',
            duration: 2000,
          });
          return
        }
      }
      if(this.properties.type === 'highshow'){
        // 校验逻辑：s_code 和 z_img 至少有一项必填
        if (!this.data.remark && this.data.z_img.length === 0) {
          wx.showToast({
            title: this.properties.verifyTitle,
            icon: 'none',
            duration: 2000,
          });
          return
        }
      }      
       
      this.triggerEvent('confirm', {
        s_code: this.data.s_code,
        z_img: this.data.z_img,
        remark: this.data.remark,
      });

    },

    // 取消
    onCancel() {
      this.triggerEvent('cancel');
    },

    // 图片上传成功后的回调
    onAfterRead(event) {
      const { file } = event.detail;

      // 将图片上传到服务器
      this.uploadFile(file);
    },

    // 上传图片到服务器
    uploadFile(file) {
      const maxSize = 2 * 1024 * 1024; // 限制文件大小为 2MB
      // 检查文件大小
      if (file.size > maxSize) {
        wx.showToast({
          title: '文件大小不能超过 2MB',
          icon: 'none',
        });
        return; // 拒绝上传
      }
      // 显示 loading
      wx.showLoading({
        title: '上传中...',
        mask: true, // 显示透明蒙层，防止触摸穿透
      });

      wx.uploadFile({
        url: `${env.baseURL}/up_imgs`, // 替换为你的服务器地址
        filePath: file.url,
        method: 'POST', // 确保使用 POST 方法
        name: 's_img',
        success: (res) => {
          wx.hideLoading(); // 隐藏 loading
          const data = JSON.parse(res.data);
          if (data.code === 200) {
            // 上传成功，更新 z_img
            const { z_img } = this.data;
            z_img.push({ url: `${env.imgBaseURL}/${data.data}` });
            this.setData({ z_img });
          } else {
            wx.showToast({
              title: '上传失败',
              icon: 'none',
            });
          }
        },
        fail: (err) => {
          wx.hideLoading(); // 隐藏 loading
          console.error('上传失败', err);
          wx.showToast({
            title: '上传失败',
            icon: 'none',
          });
        },
      });
    },

    // 删除图片的回调
    onDelete(event) {
      const { index } = event.detail;
      const { z_img } = this.data;

      // 删除指定图片
      z_img.splice(index, 1);
      this.setData({ z_img });
    },
  },
});